import requests
from common.yaml_utils import yaml_utils
from common.allure_with import allure_with


class Requests:
    def __init__(self, headers=None):
        # 封装requests方法
        # headers: 接口的header
        self.s = requests.Session()
        self.s.headers = headers
        # 获取配置文件yaml中的url,方便下面做接口拼接
        self.url = yaml_utils().get_url()

    def get_request(self, url, params=None):
        # 封装get请求方法
        # 后续需要更改环境的话直接改config中的data.yaml文件的url即可
        response = self.s.get(self.url + url, params=params)
        # 调用处理报文的方法，把接口信息加入到测试报告
        allure_with(params, response)
        return response

    def post_request(self, url, data=None, json=None):
        # 封装post请求方法
        # 如果传入的是表单,那就传data
        if data:
            response = self.s.post(self.url + url, data=data)
            # 调用处理报文的方法，把接口信息加入到测试报告
            allure_with(data, response)
            return response
        # 如果传入的是json,那就传json
        if json:
            response = self.s.post(self.url + url, json=json)
            # 调用处理报文的方法，把接口信息加入到测试报告
            allure_with(json, response)
            return response
        # 针对什么都不传的post请求
        response = self.s.post(self.url + url)
        # 调用处理报文的方法，把接口信息加入到测试报告
        allure_with(json, response)
        return response

    def __del__(self):
        if self.s:
            self.s.close()

if __name__ == '__main__':
    get_res = Requests().get_request("/get")
    post_res = Requests().post_request("/post")
    print(get_res.text, "\n", post_res.text, "\n")